package com.justech.eat.service;

import com.justech.common.vo.PageDto;
import com.justech.eat.controller.req.OrderDayCount;
import com.justech.eat.controller.req.OrderDetailReq;
import com.justech.eat.entity.Order;
import com.justech.eat.entity.OrderDetailAbnormalRecord;

import java.util.List;
import java.util.Map;

/**
 * @program: eat-service
 * @description: 订餐管理后台功能
 * @author: feifei.li
 * @create: 2020-05-28 11:18
 **/
public interface OrderMgrService {

    /**
     * 批量添加报餐信息
     *
     * @param orderDetailReqs
     */
    void submitOrders(List<OrderDetailReq> orderDetailReqs, String date, String jobNumber);

    /**
     * 提交报餐
     *
     * @param orderDetailReqs
     */
    void submitOrder(OrderDetailReq orderDetailReqs, String date, String jobNumber);

    /**
     * 批量处理异常
     *
     * @param abnormalIds 工号列表
     * @param reason      异常原因 (接收随意输入的字符)
     * @param reasonCode  异常原因代码 (如果不知道具体的{@reasonCode}可以传入0)
     */
    void explainOrderAbnormals(List<Long> abnormalIds, String reason, int reasonCode);

    /**
     * 处理异常
     *
     * <strong>
     * 处理异常前需注意一下：
     * 1、检查当前用户是否存在异常
     * 2、检查日期是否合法(必须是已经过去的日期)
     * </strong>
     *
     * @param reason
     * @param reasonCode
     */
    void explainOrderAbnormal(Long abnormalId, String reason, int reasonCode);

    /**
     * 异常列表
     *
     * @param params
     * @param page
     * @param size
     * @return
     */
    PageDto<OrderDetailAbnormalRecord> getAbnormalList(OrderDetailAbnormalRecord params, long page, int size);

    /**
     * 报餐明细
     *
     * @param order
     * @param page
     * @param size
     * @return
     */
    PageDto<Order> getOrderList(Order order, long page, int size);

    /**
     * 报餐详情(包含每餐明细)
     *
     * @param order
     * @param page
     * @param size
     * @return
     */
    PageDto<Order> getOrderDetailList(Order order, long page, int size);

    /**
     * 查询当天各餐别的报餐数量
     * @return
     */

    OrderDayCount findAllDetail();


}
